Skip to content

feat: skill architecture-tests, de la intención a la restricción (v3.6.0) - #28

Merged
lacasoft merged 2 commits into
masterfrom
feat/restricciones-de-arquitectura
Nov 3, 2026
Merged

lacasoft merged 2 commits into
masterfrom
feat/restricciones-de-arquitectura

Conversation

@lacasoft

@lacasoft lacasoft commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Summary

Cierra la parte de verificabilidad del plan de responsabilidades: un límite escrito en CLAUDE.project.md es una intención; con esta versión puede volverse una restricción que falla sola.

  • Skill nueva architecture-tests (20 skills). Convierte Responsabilidades y límites, Contextos y propiedad y las reglas de límite en reglas del lint o de los tests:
    • dependencias entre módulos, interfaz pública (repositorios y modelos del ORM no salen de su módulo), propiedad de los datos y ciclos;
    • herramienta libre por stack: dependency-cruiser (MIT), import-linter (BSD-2-Clause), Spring Modulith o ArchUnit (Apache-2.0), ArchUnitNET (Apache-2.0), deptrac (MIT), lakos (MIT). Solidity: no aplica;
    • alternativa sin dependencias: un test del proyecto que lee los imports, marcado como más débil;
    • provoca una violación antes de dar una regla por buena; una violación heredada queda como excepción explícita con motivo y nota de deuda;
    • anota en Testing → Restricciones de arquitectura qué está automatizado y qué sigue como intención.
  • /project-context (desde un design.md) deja cada límite como "intención: sin automatizar" y propone la skill al cerrar.
  • Baseline §7: una carpeta o un módulo del framework no aíslan nada. Overlays de NestJS (@Module) y Django (apps) lo advierten.
  • ship-gate (las intenciones son manual) y reviewer (cruces de límite y excepciones sin motivo).
  • Plantilla de CLAUDE.project.md: Testing pide las restricciones.
  • Compatible con Pi: la skill no tiene archivos auxiliares y usa rutas desde la raíz.

Test plan

  • npm run validate (59 comprobaciones) y npm test (199 pass, 7 skipped, 0 fail)
  • Proyecto de prueba (tres módulos, aprobaciones escribe el saldo directo en el repositorio de saldos), instalado desde esta rama con --pi:
    • Claude Code + Sonnet, con dependency-cruiser 18.7.0 fijo: seis reglas con su nombre y referencia a CLAUDE.project.md, en npm run lint; una violación temporal por regla (incluido un ciclo) y luego borradas; la violación heredada como excepción acotada a un archivo y anotada como deuda, sin arreglarla. Verificado aparte: lint limpio pasa y un import prohibido nuevo falla con dos reglas.
    • Pi + Sonnet, sin dependencias nuevas: test que lee los imports (interfaz pública, ciclos, excepciones vigentes), en lint y test; import prohibido real en un archivo temporal, falló con su mensaje y se borró; misma excepción y deuda; el límite del saldo marcado "parcial" y la alternativa como más débil. USD 0.11.
  • CI

lacasoft added 2 commits November 3, 2026 23:45
Los límites de CLAUDE.project.md (Responsabilidades y límites, Contextos
y propiedad) eran solo intención. La skill los convierte en reglas del
lint o de los tests que fallan si alguien los cruza: dependencias,
interfaz pública, propiedad de los datos y ciclos, con una herramienta
libre por stack o con un test sin dependencias. Antes de dar una regla
por buena provoca una violación; una violación heredada queda como
excepción explícita con su motivo.

project-context deja los límites como "intención: sin automatizar",
la baseline §7 dice que una carpeta o un módulo del framework no aíslan
nada, ship-gate y reviewer los revisan, y los overlays de NestJS y
Django lo advierten.
@lacasoft
lacasoft merged commit 7dda6fd into master Nov 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant